package org.yi.fc.controller.admin.content;

import java.util.Date;

import org.yi.fc.controller.base.BaseController;
import org.yi.fc.entity.FContent;
import org.yi.fc.enums.PostStatusEnum;
import org.yi.fc.model.Pager;

import com.jfinal.plugin.activerecord.Page;

public class ContentController extends BaseController {
	
	public void list(){
		render("contentList.html");
	}
	
	/**
	 * 编辑文章
	 */
	public void edit(){
		if(isGetMethod()){
			try{
				Long id = getParaToLong("articleId");
				FContent fcontent = FContent.dao.findById(id);
				setAttr("fcontent", fcontent);
			}catch(Exception e){
				addMessage("该内容不存在");
				render("post.html");
			}
		}else{
			addMessage("不能使用POST方法访问该页面");
		}
		render("post.html");
	}
	
	public void index(){
		posts();
	}
	
	public void posts(){
		if(isGetMethod()){
			//创建token时，token的变量名不能用token，否则后台取到的值将是整个<input type='hidden' value="xxxx"/>,而不是value
			createToken("cms_token");
			render("post.html");
		}
	}
	
	/**
	 * 保存文章
	 */
	public void saveContent(){
		if(isPostMethod() ){
			
			if(!validateToken("cms_token")){
				addMessage("请不要重复提交");
				setAttr("msgStatus",ERROR);
			}else{
				try{
					FContent fcontent = getModel(FContent.class);
					fcontent.set("content_create_time", new Date())
					.set("content_status_cn", PostStatusEnum.PUBLISH.getDesc())
					.set("content_status_en", PostStatusEnum.PUBLISH.getName());
					fcontent.saveContent(fcontent);
					setAttr("fcontent", fcontent);
					
					addMessage("提交文章成功！");
					setAttr("msgStatus",SUCCESS)
					.setAttr("fcontent", fcontent);
					
				}catch(Exception e){
					addMessage("提交文章失败" + e.getMessage());
					setAttr("msgStatus",ERROR);
				}
			}
			
		}else{
			addMessage("文章提交失败，系统禁止使用" + getHttpMethod() + "方法访问！");
			setAttr("msgStatus",ERROR);
		}
		//创建token时，token的变量名不能用token，否则后台取到的值将是整个<input type='hidden' value="xxxx"/>,而不是value
		createToken("cms_token");
		render("post.html");
		
	}

	/**
	 * 查询文章
	 */
	public void queryContentList(){
		
		Pager pager = getPager();
		
		FContent fcontent = getModel(FContent.class);
			
		String keyword = this.getPara("keyword");
		
		Page<FContent> page = fcontent.queryContent(pager.getPn(), pager.getSize(),keyword);
		setAttr("page", page);
		setAttr("fcontent", fcontent);
		setAttr("keyword", keyword);
		
		render("contentList.html");
	}

	/**
	 * 删除文章（不是真的将文章删除，而是改变文章的状态）
	 */
	public void delContent(){
		try{
			Long id = getParaToLong("articleId");
			FContent.dao.findById(id)
			.set("content_status_cn", PostStatusEnum.DELETE.getDesc())
			.set("content_status_en", PostStatusEnum.DELETE.getName())
			.update();
			addMessage("删除文章成功");
		}catch(Exception e){
			addMessage("删除文章失败:\n" + e.getMessage());
		}finally{
			render("contentList.html");
		}
	}
	
	/**
	 * 删除指定的文章
	 */
	public void delContents(){
		String [] ids = getParaValues("contentId");
		String msg = "";
		try{
			for(String id : ids){
				FContent.dao.findById(id)
				.set("content_status_en", PostStatusEnum.DELETE.getName())
				.set("content_status_cn", PostStatusEnum.DELETE.getDesc())
				.update();
			}
			msg = "批量删除成功！";
		}catch(Exception e){
			msg = "批量删除失败：\n" + e.getMessage();
		}finally{
			addMessage(msg);
			render("contentList.html");
		}
		
	}
	
	/**
	 * 禁用文章成功
	 */
	public void forbidContent(){
		try{
			Long id = getParaToLong("articleId");
			FContent.dao.findById(id)
			.set("content_status_cn", PostStatusEnum.FORBID.getDesc())
			.set("content_status_en", PostStatusEnum.FORBID.getName())
			.update();
			addMessage("禁用文章成功");
		}catch(Exception e){
			addMessage("禁用文章失败:\n" + e.getMessage());
		}finally{
			render("contentList.html");
		}
	}
	
	/**
	 * 禁用指定的文章
	 */
	public void forbidContents(){
		String [] ids = getParaValues("contentId");
		String msg = "";
		try{
			for(String id : ids){
				FContent.dao.findById(id)
				.set("content_status_en", PostStatusEnum.FORBID.getName())
				.set("content_status_cn", PostStatusEnum.FORBID.getDesc())
				.update();
			}
			msg = "批量禁用成功！";
		}catch(Exception e){
			msg = "批量禁用失败：\n" + e.getMessage();
		}finally{
			addMessage(msg);
			render("contentList.html");
		}
	}
	
	/**
	 * 启用指定的文章
	 */
	public void repubContents(){
		String [] ids = getParaValues("contentId");
		String msg = "";
		try{
			for(String id : ids){
				FContent.dao.findById(id)
				.set("content_status_en", PostStatusEnum.PUBLISH.getName())
				.set("content_status_cn", PostStatusEnum.PUBLISH.getDesc())
				.update();
			}
			msg = "批量启用成功！";
		}catch(Exception e){
			msg = "批量启用失败：\n" + e.getMessage();
		}finally{
			addMessage(msg);
			render("contentList.html");
		}
	}
	
	public void reViewContent(){
		String id = getPara("cid");
		FContent fContent = FContent.dao.findById(id);
		setAttr("fContent", fContent);
		render("/themes/html/testContent.html");
	}
	
}
